package lianxi04;

import java.util.Random;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 86131
 * Date: 2024-04-21
 * Time: 14:42
 */
public class MyThread extends Thread{
    /*微信红包100块,分成3个包,现在有5个人去抢  打印结果如下:xxx抢到了XXX元 ... XXX没抢到..*/
    //共享数据
    //100元,分成3个包
    static double money = 100;
    static int count = 3;

    //最小的中奖金额
    static final double MIN = 0.01;

    @Override
    public void run() {
        //循环(一个人只能抢一次,就没有必要循环了)
        //同步代码块
        //判断共享数据是否到末尾(已经到末尾)
        //判断共享数据是否到末尾(没有到末尾)
        synchronized (MyThread.class) {  //使用锁对象也可以
            if(count == 0) {  //红包已经抽完,到了末尾
                System.out.println(getName()+"没有抢到红包");

            }else { //抢到红包了
                //定义一个变量,表示中奖金额
                double price =0;
                if(count==1) {  //代表是最后一个红包
                    //无需随机,剩下的都是红包金额
                    price = money;

                }else {  //表示第一和第二个红包,金额是随机的
                    Random r = new Random();
                    double bount = money-(count-1)*MIN;
                    price = r.nextDouble(bount);//因为有3个包,最大的红包不能随机到100,只能随机到99.98

                    if(price<MIN){
                        price = MIN;  //可能随机到0红包,限制最低0.01
                    }
                }

                //从money当中,去掉当前中奖的金额
                money = money - price;
                //红包个数减一
                count--;
                //本次红包的信息进行打印
                System.out.println(getName()+"抢到了"+price+"元!");
            }
        }
    }
}
